<%-- 
    Document   : gestionarEleccion
    Created on : 2/11/2013, 06:49:30 AM
    Author     : Lucho
--%>

<%@page import="co.dzgroup.votacion.modelo.Persona"%>
<%@page import="java.sql.Time"%>
<%@page import="co.dzgroup.votacion.modelo.Candidato"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="co.dzgroup.votacion.util.ListaUtil"%>
<%@page import="co.dzgroup.votacion.util.Hora"%>
<%@page import="java.util.Date"%>
<%@page import="co.dzgroup.votacion.modelo.Eleccion"%>
<%@page import="co.dzgroup.votacion.modelo.TipoEleccion"%>
<%@page import="java.util.List"%>
<%@page import="co.dzgroup.votacion.modelo.PartidoPolitico"%>
<%@page import="co.dzgroup.votacion.util.Formato"%>
<%@page import="co.dzgroup.votacion.implementacion.ParametrizacionEjecucion"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
<%

    Persona usuario = (Persona)session.getAttribute("dz.usuario."+session.getId());
    if(usuario!=null){
    String logout="";
    logout=Formato.cambiarSiEsNull(request.getParameter("logg"), "");

    if(logout.equals("logout")){
         response.sendRedirect("menuAdmin.jsp");
    }
    //Declaramos variables
    ParametrizacionEjecucion parametrizacionEjecucion=new ParametrizacionEjecucion();
    List<TipoEleccion> tiposEleccion=parametrizacionEjecucion.consultarTiposEleccion();
    List<Hora> horasInicio=ListaUtil.listadoHoras();
    List<Hora> horasFin=ListaUtil.listadoHoras();
    String nombre=Formato.cambiarSiEsNull(request.getParameter("nombre"),"");
    String descripcion=Formato.cambiarSiEsNull(request.getParameter("descripcion"),"");
    String fecha=Formato.cambiarSiEsNull(request.getParameter("fecha"),"");
    String horaInicio=Formato.cambiarSiEsNull(request.getParameter("hora_inicio"),"");
    String horaFin=Formato.cambiarSiEsNull(request.getParameter("hora_fin"),"");
    String[] tiposEleccionSeleccionados=request.getParameterValues("tiposEleccion");
    String[] candidatos=request.getParameterValues("candidatos");
    String accion=Formato.cambiarSiEsNull(request.getParameter("accion"),"");
    Eleccion eleccion=(Eleccion)session.getAttribute("eleccion.");
    String mensaje="";
    if(eleccion==null){
        eleccion=new Eleccion();
    }
    //Creamos el objeto partido politico
    if(!nombre.equals("") && accion.equals("")){
        eleccion=new Eleccion();
        eleccion.setDescripcion(descripcion);
        eleccion.setNombre(nombre);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        eleccion.setFechaEleccion(df.parse(fecha));
        df=new SimpleDateFormat("hh:mm:ss");
        eleccion.setHoraFin(new Time(df.parse(horaFin+":00").getTime()));
        eleccion.setHoraInicio(new Time(df.parse(horaInicio+":00").getTime()));
        //Llenamos los tipos de eleccion seleccionados
        if(tiposEleccionSeleccionados!=null){
            for(String tipo:tiposEleccionSeleccionados){
                TipoEleccion tipoEleccion=new TipoEleccion();
                tipoEleccion.setTipoEleccionId(Integer.parseInt(tipo));
                eleccion.getTiposEleccion().add(tipoEleccion);
            }
         }
       eleccion=parametrizacionEjecucion.guardarEleccion(eleccion);
       session.setAttribute("eleccion.",eleccion);

    }else if(accion.equals("actualizar")){
        //Llenamos los tipos de eleccion seleccionados
        if(candidatos!=null){
            for(String candidato:candidatos){
                Candidato candidatoSeleccionado=new Candidato();
                candidatoSeleccionado.setCandidatoId(Integer.parseInt(candidato));
                eleccion.getCandidatos().add(candidatoSeleccionado);
            }
         }
        if(parametrizacionEjecucion.guardarEleccionCandidato(eleccion)){
            session.removeAttribute("eleccion.");
            mensaje="Se registro la elección y sus candidatos correctamente";
            eleccion=new Eleccion();
        }

    }
%>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type='text/JavaScript' src='../js/scw.js'></script>
        <title>.: DzGroup Votacion Online :.</title>
        <script language="Java" type="text/JavaScript">

            /*
             * Función para guardar la elección y validar su datos obligatorios
             */
            function guardarEleccion(form){
                    var esCorrecto=true;

                    if(form.nombre.value==''){
                        alert('Debe ingresar el nombre de la elección!!');
                        esCorrecto=false;
                    }else if(form.fecha.value==''){
                        alert('Debe seleccionar la fecha de la elección!!');
                        esCorrecto=false;
                    }
                    var fechaActual= new Date();
                    if(form.fecha.value<fechaActual){
                        alert('La fecha de eleccion no puede ser inferior a la fecha actual');
                        esCorrecto=false;
                    }
                    var horaInicio;
                    var horaFin;
                    if(form.hora_inicio.value!=''){
                        horaInicio=parseInt(form.hora_inicio.value.substring(0,2));
                    }else{
                        alert('Debe Seleccionar una hora inicio');
                        esCorrecto=false;
                    }

                    if(form.hora_fin.value!=''){
                        horaFin=parseInt(form.hora_fin.value.substring(0,2));
                    }else{
                        alert('Debe Seleccionar una hora fin');
                        esCorrecto=false;
                    }
                    if(esCorrecto){

                        if(horaInicio>horaFin){
                            alert('La hora incial no puede ser mayor que la hora final!!');
                            esCorrecto=false;
                        }else if(horaInicio==horaFin){
                            alert('La hora incial y la hora final no pueden ser iguales!!');
                            esCorrecto=false;
                        }
                    }
                    var tiposSeleccionados=0;
                    for(var i=0;i<form.tiposEleccion.length;i++){
                        if(form.tiposEleccion[i].checked){
                            tiposSeleccionados++;
                        }
                    }
                    if(tiposSeleccionados==0){
                        alert('Debe seleccionar al menos un tipo de elección');
                        esCorrecto=false;
                    }
                    if(esCorrecto){
                        form.submit();
                    }
            }

            /**
             * Función para mostrar los mensajes de alert para el evento
             * onload del tag body de la página
             */
            function mostrarMensaje(mensaje){
                if(mensaje!=''){
                    alert(mensaje);
                }
            }

            /**
             * Metodo que regresa al menu administrador
             */
            function cancelar(form) {
                form.logg.value='logout';
                form.submit();
            }
        </script>
    </head>
    <jsp:include page="head.jsp" flush="true|false" />
    <body onload="mostrarMensaje('<%=mensaje%>');">
        <form name="formulario" method="post" action="gestionarEleccion.jsp">
            <input type="hidden" name="logg">
            <center>
                <br>
                <table>
                <tr>
                    <th colspan="2" align="center"><font size="5">Gestionar Elección</font></th>
                </tr>
                <tr>
                    <td><br></td>
                </tr>
                <tr>
                    <th align="left">Nombre (<font color="red">*</font>)</th>
                    <td><input type="text" size="50" name="nombre" id="nombre" value="<%=eleccion.getNombre()%>"></td>
                </tr>
                <tr>
                    <th align="left">Descripción</th>
                    <td>
                        <textarea cols="20" rows="5" id="descripcion" name="descripcion">
                            <%=Formato.cambiarSiEsNull(eleccion.getDescripcion(),"")%>
                        </textarea>
                    </td>
                </tr>
                <tr>
                    <th align="left">Fecha (<font color="red">*</font>)</th>
                    <td>
                        <input  onclick='scwShow(this,event);' value='<%=eleccion.getFechaEleccion()!=null?Formato.fechaDateFormatoEstandar(eleccion.getFechaEleccion()):"" %>' id="fecha" name="fecha"/>
                    </td>
                </tr>
                <tr>
                    <th align="left">Hora Inicio (<font color="red">*</font>)</th>
                    <td>
                        <select name="hora_inicio" id="hora_inicio">
                            <option value="">Seleccione una opción</option>
                             <%
                            for(Hora hora:horasInicio){
                                if(eleccion.getHoraInicio()!=null){
                                %>
                                    <option value="<%=hora.getHora()%>" <%if(eleccion.getHoraInicio().toString().equals(hora.getHora()+":00")){%>selected<%}%>><%=hora.getHora()%></option>
                                <%
                                }else{
                                %>
                                    <option value="<%=hora.getHora()%>"><%=hora.getHora()%></option>
                                <%}
                            }
                            %>
                        </select>
                    </td>
                </tr>
                <tr>
                    <th align="left">Hora Fin (<font color="red">*</font>)</th>
                    <td>
                        <select name="hora_fin" id="hora_fin">
                            <option value="">Seleccione una opción</option>
                             <%
                            for(Hora hora:horasFin){
                             if(eleccion.getHoraFin()!=null){
                                %>
                                    <option value="<%=hora.getHora()%>" <%if(eleccion.getHoraFin().toString().equals(hora.getHora()+":00")){%>selected<%}%>><%=hora.getHora()%></option>
                                <%
                                }else{
                                %>
                                    <option value="<%=hora.getHora()%>"><%=hora.getHora()%></option>
                                <%}
                            }%>
                        </select>
                    </td>
                </tr>
                <tr>
                    <th align="left">Tipos de Elección (<font color="red">*</font>)</th>
                    <td>
                        
                        <%
                        for(TipoEleccion tipoEleccion:tiposEleccion){
                        %>
                        <input type="checkbox" name="tiposEleccion" value="<%=tipoEleccion.getTipoEleccionId()%>" <%if(eleccion.existeTipoEleccion(tipoEleccion.getTipoEleccionId())){%> checked <%}%>>
                            <%=tipoEleccion.getNombre()%><br>
                        <%} %>

                    </td>
                </tr>
                <%
                if(eleccion.getEleccionId()!=null){
                %>
                <tr>
                    <td colspan="2"><hr>
                        <input type="hidden" name="accion" value="actualizar"/>
                    </td>
                </tr>
                <tr>
                    <th>Candidatos</th>
                    <td>
                        <%
                        List<Candidato> listadCandidatos=parametrizacionEjecucion.consultarCandidatosEleccion(eleccion.getCadenaTiposEleccion());
                        for(Candidato candidato:listadCandidatos){
                        %>
                        <input type="checkbox" name="candidatos" value="<%=candidato.getCandidatoId()%>"><%=candidato.getTipoEleccion().getNombre()+" - "+candidato.getNombre() %><br>
                        <%
                        }
                        %>
                    </td>
                </tr>
                <%}%>
                 <tr>
                     <td align="center" colspan="2"><input type="button" value="Guardar" onclick="guardarEleccion(this.form);"><input type="reset" value="Limpiar"><input type="button" value="Volver" onclick="cancelar(this.form);"></td>
                </tr>
            </table>
            </center>
        </form>
    </body>
    <br>
    <%}else{
        response.sendRedirect("login.jsp");
      }%>
    <jsp:include page="foot.jsp" flush="true|false" />
</html>
